package com.coolingme.general;

/**
 * 抽象主题，指被观察(observable)的对象，抽象或接口，定义了增加，删除，通知观察者对象的方法
 *
 * @author wangyue
 * @date 2020-10-01 22:56
 */
public interface ISubject<E> {

    /**
     * 添加观察者对象
     *
     * @param observer 观察者对象
     * @return boolean
     */
    boolean attach(IObserver<E> observer);

    /**
     * 删除观察者对象
     *
     * @param observer 观察者对象
     * @return boolean
     */
    boolean detach(IObserver<E> observer);

    /**
     * 通知观察者对象
     *
     * @param event 事件
     */
    void notify(E event);

}
